package com.lanou3g.code0426;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * Created by dllo on 18/4/26.
 */

public class Main {
    /*
    *
    * JDBC 一共有四个 核心类
    * 1.DriverManger
    *   用来管理驱动的,
    *
    *
    * 2.Connection
    * 3.Statement
    * 4.ResultSet
    *
    * */

//    static {
//        System.out.println("ss");
//    };    // 出现类名,静态代码块就会执行

    public static void main(String[] args) {


        System.err.println("sdfasdfasdf");  // 打红字

        try {
            // 1.装载驱动
            Class.forName("com.mysql.jdbc.Driver");  // 直接写到文件中用IO流读取就可以,将其抽离出
          //  DriverManager.registerDriver(new com.mysql.jdbc.Driver()); // 不灵活,不用,需要运行时改代码


            // 2. 获得连接  默认3306 是mysql的端口  参数:"jdbc//连接的数据库名字://连接的数据库ip:端口号/数据库中的哪一个库","用户名", "密码"
           Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/lan_ou?","root","123456");
            //3.获得执行sql语句的对象
            Statement state = conn.createStatement();

            //4.执行sql语句
            String  sql = "select * from stu";
            ResultSet resultSet = state.executeQuery(sql); // 得到结果集的虚拟表  执行后有结果的
          //  int row = state.executeUpdate(sql); // 用来执行没有结果的sql,更新,增加,删除 返回值是int,用来表示这条sql影响了多少行数据,根据返回值判断语句执行与否
            while (resultSet.next()){
                // 1.用getObject取,
//                System.out.println(resultSet.getObject("sid"));
//                System.out.println(resultSet.getObject("sname"));
//                System.out.println(resultSet.getObject("gender"));
//                System.out.println(resultSet.getObject("age"));


                resultSet.getObject(3); //2. 用列号获取第几列,不建议用


                //3.用对应的类型获取
                String id =  resultSet.getString("sid");
                String name =  resultSet.getString("sname");
                String gender =  resultSet.getString("gender");
                int age =  resultSet.getInt("age");


            }



         //   state.execute(sql); // 可以执行很多条sql语句


            // 5.关闭资源
            state.close();
            conn.close();

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //将关闭放进来
        }


    }

}
